package com.ncdnapp.util;

import org.noear.solon.core.util.Assert;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

/**
 * @Author: chenbin
 * @Description:
 * @Date: create in 2022/3/31 10:12
 */
public class FileUtil {
    /**
     * 获取应用运行目录
     *
     * @return
     */
    public static String getAppPath() {
        String path = Class.class.getClass().getResource("/").getPath().substring(1) + "../";
        return path;
    }

    /**
     * 检查目录或文件是否存在
     *
     * @param file
     * @return
     */
    public static boolean exists(String file) {
        File f = new File(file);
        return f.exists();
    }

    /**
     * 创建文件夹
     *
     * @param dir
     * @return
     */
    public static boolean createDirs(String dir) {
        File file = new File(dir);
        if (!file.exists()) {
            return file.mkdirs();
        }
        return true;
    }

    public static boolean createParentDirs(String dir) {
        File file = new File(dir);
        if (!file.getParentFile().exists()) {
            return file.getParentFile().mkdirs();
        }
        return true;
    }

    public static File createFile(String filePath) throws IOException {
        File file = new File(filePath);
        if (file.exists()) {
            return file;
        }
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        file.createNewFile();
        return file;
    }

    public static void createFile(String filePath, byte[] fileContent) throws IOException {
        createParentDirs(filePath);
        Files.write(Paths.get(filePath), fileContent, StandardOpenOption.CREATE);
    }

    /**
     * 获取文件夹下所有文件
     *
     * @param dir
     * @return
     */
    public static File[] listFilesFromeDir(String dir) {
        File file = new File(dir);
        return file.listFiles();
    }

    public static void delFile(String filePath) {
        File file = new File(filePath);
        if (!file.exists()) {
            return;
        }
        file.delete();
    }
}
